package Model;

import static Controler.FreteControl.getDistancia;
import java.util.ArrayList;

/**
 *
 * @author Gilberto Toledo
 */
public class Frete {
    private int    CodigoFrete;
    
    private String CEPRem;
    private String NomeRem;
    private String EndRem;
    private String BaiRem;
    private String NomeCidRem;
    private String NumRem;
    private String UFRem;
    
    private String CPFRem;
    private String TelRem;
    private String CelRem;
    private String EmailRem;
    
    private String CEPDest;    
    private String NomeDest;
    private String EndDest;
    private String BaiDest;
    private String NomeCidDest;
    private String NumDest;
    private String UFDest;
    
    private int    Volumes;
    private double ValorFrete;
    
    private String Modalidade;
    
    private boolean orcamento;
    
    private ArrayList<ItemFrete> Itens;
    
    //--------------------------------------------------------------------------
    public Frete() {
        this.Itens = new ArrayList();
    }
    
    
    public boolean isOrcamento() {
        return orcamento;
    }

    public void setOrcamento(boolean orcamento) {
        this.orcamento = orcamento;
    }    

    public int getCodigoFrete() {
        return CodigoFrete;
    }

    public void setCodigoFrete(int CodigoFrete) {
        this.CodigoFrete = CodigoFrete;
    }

    public String getCEPRem() {
        return CEPRem;
    }

    public void setCEPRem(String CEPRem) {
        this.CEPRem = CEPRem;
    }

    public String getNomeRem() {
        return NomeRem;
    }

    public void setNomeRem(String NomeRem) {
        this.NomeRem = NomeRem;
    }

    public String getEndRem() {
        return EndRem;
    }

    public void setEndRem(String EndRem) {
        this.EndRem = EndRem;
    }

    public String getBaiRem() {
        return BaiRem;
    }

    public void setBaiRem(String BaiRem) {
        this.BaiRem = BaiRem;
    }

    public String getNomeCidRem() {
        return NomeCidRem;
    }

    public void setNomeCidRem(String NomeCidRem) {
        this.NomeCidRem = NomeCidRem;
    }

    public String getNomeCidDest() {
        return NomeCidDest;
    }

    public void setNomeCidDest(String NomeCidDest) {
        this.NomeCidDest = NomeCidDest;
    }

    public String getNumRem() {
        return NumRem;
    }

    public void setNumRem(String NumRem) {
        this.NumRem = NumRem;
    }

    public String getUFRem() {
        return UFRem;
    }

    public void setUFRem(String UFRem) {
        this.UFRem = UFRem;
    }

    public String getCPFRem() {
        return CPFRem;
    }

    public void setCPFRem(String CPFRem) {
        this.CPFRem = CPFRem;
    }

    public String getTelRem() {
        return TelRem;
    }

    public void setTelRem(String TelRem) {
        this.TelRem = TelRem;
    }

    public String getEmailRem() {
        return EmailRem;
    }

    public void setEmailRem(String EmailRem) {
        this.EmailRem = EmailRem;
    }

    public String getCEPDest() {
        return CEPDest;
    }

    public void setCEPDest(String CEPDest) {
        this.CEPDest = CEPDest;
    }

    public String getNomeDest() {
        return NomeDest;
    }

    public void setNomeDest(String NomeDest) {
        this.NomeDest = NomeDest;
    }

    public String getEndDest() {
        return EndDest;
    }

    public void setEndDest(String EndDest) {
        this.EndDest = EndDest;
    }

    public String getBaiDest() {
        return BaiDest;
    }

    public void setBaiDest(String BaiDest) {
        this.BaiDest = BaiDest;
    }

    public String getNumDest() {
        return NumDest;
    }

    public void setNumDest(String NumDest) {
        this.NumDest = NumDest;
    }

    public String getUFDest() {
        return UFDest;
    }

    public void setUFDest(String UFDest) {
        this.UFDest = UFDest;
    }

    public int getVolumes() {
        return Volumes;
    }

    public void setVolumes(int Volumes) {
        this.Volumes = Volumes;
    }

    public double getValorFrete() {
        return ValorFrete;
    }

    public void setValorFrete(double ValorFrete) {
        this.ValorFrete = ValorFrete;
    }

    public String getModalidade() {
        return Modalidade;
    }

    public void setModalidade(String Modalidade) {
        this.Modalidade = Modalidade;
    }
    
    public void addItemFrete(ItemFrete I){
        Itens.add(I);
    }

    public void setItens(ArrayList<ItemFrete> Itens) {
        this.Itens = Itens;
    }
    
    
    public ArrayList getItensFrete(){
        return Itens;
    }

    public String getCelRem() {
        return CelRem;
    }

    public void setCelRem(String CelRem) {
        this.CelRem = CelRem;
    }
    
    public static double CalculaFrete(String Modalidade, double peso, String CidOri, String CidDest){
        double fator;
        
        double CustoKM = 0.10;
        
        switch(Modalidade){
            case "Normal":
                fator = 1;
                break;
            case "Rápido":
                fator = 1.2;
                break;
            case "Super-rápido":
                fator = 1.5;
                break;
            default:
                fator=1;
        }
        
        return getDistancia(CidOri,CidDest) * CustoKM * peso * fator;
    }
}
